import React,{Component} from 'react';

class Compare extends Component {
    constructor(){
        super();
        this.state = {num1:0, num2:0}
    }
    // support = ()=>{
    //     this.setState({num1: this.state.num1+1});
    // }
    // oppose = ()=>{
    //     this.setState({num2: this.state.num2+1});
    // }
    fun(num){
        this.setState({[num]: this.state[num]+1});
    }
    render(){
        const {num1, num2} = this.state;
        var percent = (num1 / (num1+num2)*100).toFixed(2);
        if(isNaN(percent)){
            percent = 0;
        }
        return(
        <div>
            <h1>{this.props.title}</h1>
            <div>支持人数：{num1}</div>
            <div>反对人数：{num2}</div>
            <div>支持率：{percent}%</div>
            <button onClick = {()=>{this.fun('num1')}}>支持</button>
            <button onClick = {()=>{this.fun('num2')}}>反对</button>
        </div>    
        );
    }
}

export default Compare;
const add2 = (a,b,c)=>{
    return a+b+c;
}
const add3 = (a)=>{
    return(b)=>{
        return(c)=>{
            return a+b+c;
        }
    }
}
//add3简写
const add4 = a=>b=>c=>a+b+c;
console.log(add2(1, 2, 3));
console.log(add3(1)(2)(3));
console.log(add4(1)(2)(3));

/*
函数柯里化：将一个接收多个参数的函数变成只接受单一参数，并且返回一个接收其余参数且进行计算处理的函数的一种技术
高阶函数：接受一个函数作为参数或者返回一个函数作为输出的函数
 */